package com.tech.mapper;

import com.tech.repository.entity.GoodsImage;
import org.apache.ibatis.annotations.Param;

import java.awt.image.BufferedImage;
import java.util.List;
import java.util.TreeMap;

public interface GoodsImageDao {
	/**
	 * 通过ID查找商品图片
	 *
	 * @param imid 要查找商品图片的所属ID
	 * @return 找到就返回，否则返回null
	 */
	GoodsImage getGoodsImageById(@Param("imid") int imid);

	/**
	 * 获取指定商品的所有商品图片
	 *
	 * @return 该商品的商品图片列表
	 */
	List<GoodsImage> getGoodsImagesList(@Param("gid") int gid, @Param("count") int count);

	/**
	 * 根据商品ID获取除image以外的所有数据
	 */
	List<GoodsImage> getGoodsImageIgnoreImage(@Param("gid") int gid);
	/**
	 * 获取商品图片编号递增的所有商品图片
	 *
	 * @return 所有商品图片信息，键为商品ID，值为商品图片
	 */
	TreeMap<Integer, List<GoodsImage>> getAllGoodsImages();

	GoodsImage getImageByImid(@Param("imid") int imid);
	/**
	 * 添加新的商品图片信息
	 *
	 * @param goodsImage 新的商品图片信息
	 * @return 新商品图片所属ID
	 */
	int addGoodsImage(GoodsImage goodsImage);

	/**
	 * 添加新的商品图片信息
	 *
	 * @param goodsImageList 商品图片列表
	 * @return 影响的行数
	 */
	int[] addGoodsImages(List<GoodsImage> goodsImageList);

	/**
	 * 根据ID删除指定商品图片
	 *
	 * @param id 要删除商品图片的ID
	 * @return 是否删除成功，不存在时返回false
	 */
	boolean delGoodsImage(int id);

	/**
	 * 根据ID批量删除商品图片
	 *
	 * @param GoodsImageList 要删除商品图片的ID列表
	 * @return 影响到的行数
	 */
	int[] delGoodsImage(List<Integer> GoodsImageList);

	/**
	 * 删除指定商品的所有商品图片
	 *
	 * @param goodsId 商品ID
	 * @return 影响到的行数
	 */
	int delGoodsGoodsImage(int goodsId);

	/**
	 * 删除所有商品图片
	 *
	 * @return 如果商品图片数据改变就返回true
	 */
	boolean delAllGoodsImage();

	boolean updateGoodsImage(GoodsImage goodsImage);
}
